﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.IO;
using System.IO.Compression;

/// <summary>
/// viewstate 解压，压缩
/// </summary>
public static class Compressor
{
    public static byte[] Compress(byte[] data)
    {
        MemoryStream output = new MemoryStream();
        using (GZipStream gzip = new GZipStream(output, CompressionMode.Compress, true))
        {
            gzip.Write(data, 0, data.Length);
            gzip.Close();
        }
       
        return output.ToArray();
    }

    public static byte[] Decompress(byte[] data)
    {
        MemoryStream output = new MemoryStream();
        using (MemoryStream input = new MemoryStream())
        {
            input.Write(data, 0, data.Length);
            input.Position = 0;
            GZipStream gzip = new GZipStream(input,
                              CompressionMode.Decompress, true);

            byte[] buff = new byte[64];
            int read = -1;
            read = gzip.Read(buff, 0, buff.Length);
            while (read > 0)
            {
                output.Write(buff, 0, read);
                read = gzip.Read(buff, 0, buff.Length);
            }
            gzip.Close();
        }
    
        return output.ToArray();
    }
}